<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621679581385"><span id="local-6989586621679581386"></span></span><span class="hs-pragma">{-# LANGUAGE DeriveDataTypeable #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE DeriveGeneric #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE PolyKinds #-}</span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LANGUAGE Safe #-}</span><span>
</span><span id="line-5"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-6"></span><span class="hs-comment">-- |</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- Module      :  Data.Functor.Product</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- Copyright   :  (c) Ross Paterson 2010</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- License     :  BSD-style (see the file LICENSE)</span><span>
</span><span id="line-10"></span><span class="hs-comment">--</span><span>
</span><span id="line-11"></span><span class="hs-comment">-- Maintainer  :  libraries@haskell.org</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- Stability   :  experimental</span><span>
</span><span id="line-13"></span><span class="hs-comment">-- Portability :  portable</span><span>
</span><span id="line-14"></span><span class="hs-comment">--</span><span>
</span><span id="line-15"></span><span class="hs-comment">-- Products, lifted to functors.</span><span>
</span><span id="line-16"></span><span class="hs-comment">--</span><span>
</span><span id="line-17"></span><span class="hs-comment">-- @since 4.9.0.0</span><span>
</span><span id="line-18"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-19"></span><span>
</span><span id="line-20"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Data.Functor.Product</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-21"></span><span>    </span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier">Product</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-23"></span><span>
</span><span id="line-24"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Control.Applicative.html"><span class="hs-identifier">Control.Applicative</span></a></span><span>
</span><span id="line-25"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Control.Monad.html"><span class="hs-identifier">Control.Monad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#MonadPlus"><span class="hs-identifier">MonadPlus</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-26"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Control.Monad.Fix.html"><span class="hs-identifier">Control.Monad.Fix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Control.Monad.Fix.html#MonadFix"><span class="hs-identifier">MonadFix</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Control.Monad.Zip.html"><span class="hs-identifier">Control.Monad.Zip</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Control.Monad.Zip.html#MonadZip"><span class="hs-identifier">MonadZip</span></a></span><span class="hs-special">(</span><span class="annot"><a href="Control.Monad.Zip.html#mzipWith"><span class="hs-identifier">mzipWith</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-28"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Data.html"><span class="hs-identifier">Data.Data</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Data.html#Data"><span class="hs-identifier">Data</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-29"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html"><span class="hs-identifier">Data.Functor.Classes</span></a></span><span>
</span><span id="line-30"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Generics.html"><span class="hs-identifier">GHC.Generics</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Generics.html#Generic"><span class="hs-identifier">Generic</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Generics.html#Generic1"><span class="hs-identifier">Generic1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-31"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Text.Read.html"><span class="hs-identifier">Text.Read</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Read.html#Read"><span class="hs-identifier">Read</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Read.html#readListDefault"><span class="hs-identifier">readListDefault</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Read.html#readListPrecDefault"><span class="hs-identifier">readListPrecDefault</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-32"></span><span>
</span><span id="line-33"></span><span class="hs-comment">-- | Lifted product of functors.</span><span>
</span><span id="line-34"></span><span id="local-6989586621679581378"><span id="local-6989586621679581379"><span id="local-6989586621679581380"><span id="local-6989586621679581381"></span></span></span></span><span class="hs-keyword">data</span><span> </span><span id="Product"><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-var">Product</span></a></span></span><span> </span><span id="local-6989586621679581751"><span class="annot"><a href="#local-6989586621679581751"><span class="hs-identifier hs-type">f</span></a></span></span><span> </span><span id="local-6989586621679581750"><span class="annot"><a href="#local-6989586621679581750"><span class="hs-identifier hs-type">g</span></a></span></span><span> </span><span id="local-6989586621679581752"><span class="annot"><a href="#local-6989586621679581752"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Pair"><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679581751"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581752"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679581750"><span class="hs-identifier hs-type">g</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581752"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-35"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span> </span><span id="local-6989586621679581342"><span id="local-6989586621679581344"><span id="local-6989586621679581346"><span id="local-6989586621679581348"><span id="local-6989586621679581350"><span id="local-6989586621679581352"><span id="local-6989586621679581354"><span id="local-6989586621679581356"><span id="local-6989586621679581358"><span id="local-6989586621679581360"><span id="local-6989586621679581362"><span id="local-6989586621679581364"><span id="local-6989586621679581368"><span id="local-6989586621679581372"><span class="annot"><span class="annottext">Typeable (Product f g a)
Typeable (Product f g a)
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; Product f g a -&gt; c (Product f g a))
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (Product f g a))
-&gt; (Product f g a -&gt; Constr)
-&gt; (Product f g a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (Product f g a)))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e))
    -&gt; Maybe (c (Product f g a)))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; Product f g a -&gt; Product f g a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; [u])
-&gt; (forall u.
    Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; Product f g a -&gt; m (Product f g a))
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; Product f g a -&gt; m (Product f g a))
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; Product f g a -&gt; m (Product f g a))
-&gt; Data (Product f g a)
Product f g a -&gt; Constr
Product f g a -&gt; DataType
(forall b. Data b =&gt; b -&gt; b) -&gt; Product f g a -&gt; Product f g a
forall a.
Typeable a
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; a -&gt; c a)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c a)
-&gt; (a -&gt; Constr)
-&gt; (a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c a))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c a))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; a -&gt; a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u])
-&gt; (forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; Data a
forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; u
forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; [u]
forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
forall {k} {f :: k -&gt; *} {g :: k -&gt; *} {a :: k}.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Typeable (Product f g a)
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Product f g a -&gt; Constr
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Product f g a -&gt; DataType
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall b. Data b =&gt; b -&gt; b) -&gt; Product f g a -&gt; Product f g a
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) u.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; u
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) u.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; [u]
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) r r'.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) r r'.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (m :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), Monad m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (m :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), MonadPlus m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (Product f g a)
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; Product f g a -&gt; c (Product f g a)
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (t :: * -&gt; *)
       (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), Typeable t) =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (Product f g a))
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (t :: * -&gt; * -&gt; *)
       (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), Typeable t) =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (Product f g a))
forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (Product f g a)
forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; Product f g a -&gt; c (Product f g a)
forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (Product f g a))
forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (Product f g a))
gmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
$cgmapMo :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (m :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), MonadPlus m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
gmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
$cgmapMp :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (m :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), MonadPlus m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
gmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
$cgmapM :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (m :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), Monad m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; Product f g a -&gt; m (Product f g a)
gmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; u
$cgmapQi :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) u.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; u
gmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; [u]
$cgmapQ :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) u.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall d. Data d =&gt; d -&gt; u) -&gt; Product f g a -&gt; [u]
gmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
$cgmapQr :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) r r'.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
gmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
$cgmapQl :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) r r'.
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; Product f g a -&gt; r
gmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; Product f g a -&gt; Product f g a
$cgmapT :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall b. Data b =&gt; b -&gt; b) -&gt; Product f g a -&gt; Product f g a
dataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (Product f g a))
$cdataCast2 :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (t :: * -&gt; * -&gt; *)
       (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), Typeable t) =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (Product f g a))
dataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (Product f g a))
$cdataCast1 :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (t :: * -&gt; *)
       (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a), Typeable t) =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (Product f g a))
dataTypeOf :: Product f g a -&gt; DataType
$cdataTypeOf :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Product f g a -&gt; DataType
toConstr :: Product f g a -&gt; Constr
$ctoConstr :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
Product f g a -&gt; Constr
gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (Product f g a)
$cgunfold :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (Product f g a)
gfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; Product f g a -&gt; c (Product f g a)
$cgfoldl :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) (c :: * -&gt; *).
(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a),
 Data (g a)) =&gt;
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; Product f g a -&gt; c (Product f g a)
</span><a href="Data.Data.html#Data"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Data</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span>     </span><span class="hs-comment">-- ^ @since 4.9.0.0</span><span>
</span><span id="line-36"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(forall x. Product f g a -&gt; Rep (Product f g a) x)
-&gt; (forall x. Rep (Product f g a) x -&gt; Product f g a)
-&gt; Generic (Product f g a)
forall x. Rep (Product f g a) x -&gt; Product f g a
forall x. Product f g a -&gt; Rep (Product f g a) x
forall a.
(forall x. a -&gt; Rep a x) -&gt; (forall x. Rep a x -&gt; a) -&gt; Generic a
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) x.
Rep (Product f g a) x -&gt; Product f g a
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) x.
Product f g a -&gt; Rep (Product f g a) x
$cto :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) x.
Rep (Product f g a) x -&gt; Product f g a
$cfrom :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k) x.
Product f g a -&gt; Rep (Product f g a) x
</span><a href="GHC.Generics.html#Generic"><span class="hs-identifier hs-var hs-var hs-var hs-var">Generic</span></a></span><span>  </span><span class="hs-comment">-- ^ @since 4.9.0.0</span><span>
</span><span id="line-37"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(forall (a :: k). Product f g a -&gt; Rep1 (Product f g) a)
-&gt; (forall (a :: k). Rep1 (Product f g) a -&gt; Product f g a)
-&gt; Generic1 (Product f g)
forall (a :: k). Rep1 (Product f g) a -&gt; Product f g a
forall (a :: k). Product f g a -&gt; Rep1 (Product f g) a
forall k (f :: k -&gt; *).
(forall (a :: k). f a -&gt; Rep1 f a)
-&gt; (forall (a :: k). Rep1 f a -&gt; f a) -&gt; Generic1 f
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
Rep1 (Product f g) a -&gt; Product f g a
forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
Product f g a -&gt; Rep1 (Product f g) a
$cto1 :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
Rep1 (Product f g) a -&gt; Product f g a
$cfrom1 :: forall k (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
Product f g a -&gt; Rep1 (Product f g) a
</span><a href="GHC.Generics.html#Generic1"><span class="hs-identifier hs-var hs-var hs-var hs-var">Generic1</span></a></span><span> </span><span class="hs-comment">-- ^ @since 4.9.0.0</span><span>
</span><span id="line-38"></span><span>           </span><span class="hs-special">)</span><span>
</span><span id="line-39"></span><span>
</span><span id="line-40"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-41"></span><span id="local-6989586621679581739"><span id="local-6989586621679581740"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Eq1"><span class="hs-identifier hs-type">Eq1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581740"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Eq1"><span class="hs-identifier hs-type">Eq1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581739"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Eq1"><span class="hs-identifier hs-type">Eq1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581740"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581739"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-42"></span><span>    </span><span id="local-6989586621679581323"><span class="annot"><span class="annottext">liftEq :: forall a b.
(a -&gt; b -&gt; Bool) -&gt; Product f g a -&gt; Product f g b -&gt; Bool
</span><a href="Data.Functor.Classes.html#liftEq"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftEq</span></a></span></span><span> </span><span id="local-6989586621679581321"><span class="annot"><span class="annottext">a -&gt; b -&gt; Bool
</span><a href="#local-6989586621679581321"><span class="hs-identifier hs-var">eq</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581320"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581320"><span class="hs-identifier hs-var">x1</span></a></span></span><span> </span><span id="local-6989586621679581319"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581319"><span class="hs-identifier hs-var">y1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581318"><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581318"><span class="hs-identifier hs-var">x2</span></a></span></span><span> </span><span id="local-6989586621679581317"><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581317"><span class="hs-identifier hs-var">y2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; Bool) -&gt; f a -&gt; f b -&gt; Bool
forall (f :: * -&gt; *) a b.
Eq1 f =&gt;
(a -&gt; b -&gt; Bool) -&gt; f a -&gt; f b -&gt; Bool
</span><a href="Data.Functor.Classes.html#liftEq"><span class="hs-identifier hs-var">liftEq</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; Bool
</span><a href="#local-6989586621679581321"><span class="hs-identifier hs-var">eq</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581320"><span class="hs-identifier hs-var">x1</span></a></span><span> </span><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581318"><span class="hs-identifier hs-var">x2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%26%26"><span class="hs-operator hs-var">&amp;&amp;</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; Bool) -&gt; g a -&gt; g b -&gt; Bool
forall (f :: * -&gt; *) a b.
Eq1 f =&gt;
(a -&gt; b -&gt; Bool) -&gt; f a -&gt; f b -&gt; Bool
</span><a href="Data.Functor.Classes.html#liftEq"><span class="hs-identifier hs-var">liftEq</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; Bool
</span><a href="#local-6989586621679581321"><span class="hs-identifier hs-var">eq</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581319"><span class="hs-identifier hs-var">y1</span></a></span><span> </span><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581317"><span class="hs-identifier hs-var">y2</span></a></span></span></span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-45"></span><span id="local-6989586621679581730"><span id="local-6989586621679581731"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Ord1"><span class="hs-identifier hs-type">Ord1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581731"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Ord1"><span class="hs-identifier hs-type">Ord1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581730"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Ord1"><span class="hs-identifier hs-type">Ord1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581731"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581730"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-46"></span><span>    </span><span id="local-6989586621679581302"><span class="annot"><span class="annottext">liftCompare :: forall a b.
(a -&gt; b -&gt; Ordering) -&gt; Product f g a -&gt; Product f g b -&gt; Ordering
</span><a href="Data.Functor.Classes.html#liftCompare"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftCompare</span></a></span></span><span> </span><span id="local-6989586621679581300"><span class="annot"><span class="annottext">a -&gt; b -&gt; Ordering
</span><a href="#local-6989586621679581300"><span class="hs-identifier hs-var">comp</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581299"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581299"><span class="hs-identifier hs-var">x1</span></a></span></span><span> </span><span id="local-6989586621679581298"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581298"><span class="hs-identifier hs-var">y1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581297"><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581297"><span class="hs-identifier hs-var">x2</span></a></span></span><span> </span><span id="local-6989586621679581296"><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581296"><span class="hs-identifier hs-var">y2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-47"></span><span>        </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; Ordering) -&gt; f a -&gt; f b -&gt; Ordering
forall (f :: * -&gt; *) a b.
Ord1 f =&gt;
(a -&gt; b -&gt; Ordering) -&gt; f a -&gt; f b -&gt; Ordering
</span><a href="Data.Functor.Classes.html#liftCompare"><span class="hs-identifier hs-var">liftCompare</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; Ordering
</span><a href="#local-6989586621679581300"><span class="hs-identifier hs-var">comp</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581299"><span class="hs-identifier hs-var">x1</span></a></span><span> </span><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581297"><span class="hs-identifier hs-var">x2</span></a></span><span> </span><span class="annot"><span class="annottext">Ordering -&gt; Ordering -&gt; Ordering
forall a. Monoid a =&gt; a -&gt; a -&gt; a
</span><a href="GHC.Base.html#mappend"><span class="hs-operator hs-var">`mappend`</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; Ordering) -&gt; g a -&gt; g b -&gt; Ordering
forall (f :: * -&gt; *) a b.
Ord1 f =&gt;
(a -&gt; b -&gt; Ordering) -&gt; f a -&gt; f b -&gt; Ordering
</span><a href="Data.Functor.Classes.html#liftCompare"><span class="hs-identifier hs-var">liftCompare</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; Ordering
</span><a href="#local-6989586621679581300"><span class="hs-identifier hs-var">comp</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581298"><span class="hs-identifier hs-var">y1</span></a></span><span> </span><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581296"><span class="hs-identifier hs-var">y2</span></a></span></span></span><span>
</span><span id="line-48"></span><span>
</span><span id="line-49"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-50"></span><span id="local-6989586621679581718"><span id="local-6989586621679581719"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581294"><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Read1"><span class="hs-identifier hs-type">Read1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581719"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Read1"><span class="hs-identifier hs-type">Read1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581718"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Read1"><span class="hs-identifier hs-type">Read1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581719"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581718"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-51"></span><span>    </span><span id="local-6989586621679581287"><span class="annot"><span class="annottext">liftReadPrec :: forall a. ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec (Product f g a)
</span><a href="Data.Functor.Classes.html#liftReadPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftReadPrec</span></a></span></span><span> </span><span id="local-6989586621679581285"><span class="annot"><span class="annottext">ReadPrec a
</span><a href="#local-6989586621679581285"><span class="hs-identifier hs-var">rp</span></a></span></span><span> </span><span id="local-6989586621679581284"><span class="annot"><span class="annottext">ReadPrec [a]
</span><a href="#local-6989586621679581284"><span class="hs-identifier hs-var">rl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ReadPrec (Product f g a) -&gt; ReadPrec (Product f g a)
forall a. ReadPrec a -&gt; ReadPrec a
</span><a href="Data.Functor.Classes.html#readData"><span class="hs-identifier hs-var">readData</span></a></span><span> </span><span class="annot"><span class="annottext">(ReadPrec (Product f g a) -&gt; ReadPrec (Product f g a))
-&gt; ReadPrec (Product f g a) -&gt; ReadPrec (Product f g a)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-52"></span><span>        </span><span class="annot"><span class="annottext">ReadPrec (f a)
-&gt; ReadPrec (g a)
-&gt; String
-&gt; (f a -&gt; g a -&gt; Product f g a)
-&gt; ReadPrec (Product f g a)
forall a b t.
ReadPrec a -&gt; ReadPrec b -&gt; String -&gt; (a -&gt; b -&gt; t) -&gt; ReadPrec t
</span><a href="Data.Functor.Classes.html#readBinaryWith"><span class="hs-identifier hs-var">readBinaryWith</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec (f a)
forall (f :: * -&gt; *) a.
Read1 f =&gt;
ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec (f a)
</span><a href="Data.Functor.Classes.html#liftReadPrec"><span class="hs-identifier hs-var">liftReadPrec</span></a></span><span> </span><span class="annot"><span class="annottext">ReadPrec a
</span><a href="#local-6989586621679581285"><span class="hs-identifier hs-var">rp</span></a></span><span> </span><span class="annot"><span class="annottext">ReadPrec [a]
</span><a href="#local-6989586621679581284"><span class="hs-identifier hs-var">rl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec (g a)
forall (f :: * -&gt; *) a.
Read1 f =&gt;
ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec (f a)
</span><a href="Data.Functor.Classes.html#liftReadPrec"><span class="hs-identifier hs-var">liftReadPrec</span></a></span><span> </span><span class="annot"><span class="annottext">ReadPrec a
</span><a href="#local-6989586621679581285"><span class="hs-identifier hs-var">rp</span></a></span><span> </span><span class="annot"><span class="annottext">ReadPrec [a]
</span><a href="#local-6989586621679581284"><span class="hs-identifier hs-var">rl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Pair&quot;</span></span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span>    </span><span id="local-6989586621679581280"><span class="annot"><span class="annottext">liftReadListPrec :: forall a. ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec [Product f g a]
</span><a href="Data.Functor.Classes.html#liftReadListPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftReadListPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec [Product f g a]
forall (f :: * -&gt; *) a.
Read1 f =&gt;
ReadPrec a -&gt; ReadPrec [a] -&gt; ReadPrec [f a]
</span><a href="Data.Functor.Classes.html#liftReadListPrecDefault"><span class="hs-identifier hs-var">liftReadListPrecDefault</span></a></span><span>
</span><span id="line-55"></span><span>    </span><span id="local-6989586621679581276"><span class="annot"><span class="annottext">liftReadList :: forall a. (Int -&gt; ReadS a) -&gt; ReadS [a] -&gt; ReadS [Product f g a]
</span><a href="Data.Functor.Classes.html#liftReadList"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftReadList</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Int -&gt; ReadS a) -&gt; ReadS [a] -&gt; ReadS [Product f g a]
forall (f :: * -&gt; *) a.
Read1 f =&gt;
(Int -&gt; ReadS a) -&gt; ReadS [a] -&gt; ReadS [f a]
</span><a href="Data.Functor.Classes.html#liftReadListDefault"><span class="hs-identifier hs-var">liftReadListDefault</span></a></span></span></span><span>
</span><span id="line-56"></span><span>
</span><span id="line-57"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-58"></span><span id="local-6989586621679581698"><span id="local-6989586621679581699"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581271"><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Show1"><span class="hs-identifier hs-type">Show1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581699"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Show1"><span class="hs-identifier hs-type">Show1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581698"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Show1"><span class="hs-identifier hs-type">Show1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581699"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581698"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-59"></span><span>    </span><span id="local-6989586621679581267"><span class="annot"><span class="annottext">liftShowsPrec :: forall a.
(Int -&gt; a -&gt; ShowS)
-&gt; ([a] -&gt; ShowS) -&gt; Int -&gt; Product f g a -&gt; ShowS
</span><a href="Data.Functor.Classes.html#liftShowsPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftShowsPrec</span></a></span></span><span> </span><span id="local-6989586621679581265"><span class="annot"><span class="annottext">Int -&gt; a -&gt; ShowS
</span><a href="#local-6989586621679581265"><span class="hs-identifier hs-var">sp</span></a></span></span><span> </span><span id="local-6989586621679581264"><span class="annot"><span class="annottext">[a] -&gt; ShowS
</span><a href="#local-6989586621679581264"><span class="hs-identifier hs-var">sl</span></a></span></span><span> </span><span id="local-6989586621679581263"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679581263"><span class="hs-identifier hs-var">d</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581262"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581262"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581261"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581261"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-60"></span><span>        </span><span class="annot"><span class="annottext">(Int -&gt; f a -&gt; ShowS)
-&gt; (Int -&gt; g a -&gt; ShowS) -&gt; String -&gt; Int -&gt; f a -&gt; g a -&gt; ShowS
forall a b.
(Int -&gt; a -&gt; ShowS)
-&gt; (Int -&gt; b -&gt; ShowS) -&gt; String -&gt; Int -&gt; a -&gt; b -&gt; ShowS
</span><a href="Data.Functor.Classes.html#showsBinaryWith"><span class="hs-identifier hs-var">showsBinaryWith</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Int -&gt; a -&gt; ShowS) -&gt; ([a] -&gt; ShowS) -&gt; Int -&gt; f a -&gt; ShowS
forall (f :: * -&gt; *) a.
Show1 f =&gt;
(Int -&gt; a -&gt; ShowS) -&gt; ([a] -&gt; ShowS) -&gt; Int -&gt; f a -&gt; ShowS
</span><a href="Data.Functor.Classes.html#liftShowsPrec"><span class="hs-identifier hs-var">liftShowsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; a -&gt; ShowS
</span><a href="#local-6989586621679581265"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; ShowS
</span><a href="#local-6989586621679581264"><span class="hs-identifier hs-var">sl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Int -&gt; a -&gt; ShowS) -&gt; ([a] -&gt; ShowS) -&gt; Int -&gt; g a -&gt; ShowS
forall (f :: * -&gt; *) a.
Show1 f =&gt;
(Int -&gt; a -&gt; ShowS) -&gt; ([a] -&gt; ShowS) -&gt; Int -&gt; f a -&gt; ShowS
</span><a href="Data.Functor.Classes.html#liftShowsPrec"><span class="hs-identifier hs-var">liftShowsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; a -&gt; ShowS
</span><a href="#local-6989586621679581265"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; ShowS
</span><a href="#local-6989586621679581264"><span class="hs-identifier hs-var">sl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Pair&quot;</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679581263"><span class="hs-identifier hs-var">d</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581262"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581261"><span class="hs-identifier hs-var">y</span></a></span></span></span><span>
</span><span id="line-61"></span><span>
</span><span id="line-62"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-63"></span><span id="local-6989586621679581691"><span id="local-6989586621679581692"><span id="local-6989586621679581693"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581257"><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Eq1"><span class="hs-identifier hs-type">Eq1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581693"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Eq1"><span class="hs-identifier hs-type">Eq1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581692"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Eq"><span class="hs-identifier hs-type">Eq</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581691"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Eq"><span class="hs-identifier hs-type">Eq</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581693"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581692"><span class="hs-identifier hs-type">g</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581691"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-64"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679581253"><span class="annot"><span class="annottext">== :: Product f g a -&gt; Product f g a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var hs-var hs-var hs-var">(==)</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Product f g a -&gt; Product f g a -&gt; Bool
forall (f :: * -&gt; *) a. (Eq1 f, Eq a) =&gt; f a -&gt; f a -&gt; Bool
</span><a href="Data.Functor.Classes.html#eq1"><span class="hs-identifier hs-var">eq1</span></a></span></span></span></span><span>
</span><span id="line-65"></span><span>
</span><span id="line-66"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-67"></span><span id="local-6989586621679581685"><span id="local-6989586621679581686"><span id="local-6989586621679581687"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581237"><span id="local-6989586621679581239"><span id="local-6989586621679581241"><span id="local-6989586621679581243"><span id="local-6989586621679581245"><span id="local-6989586621679581247"><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Ord1"><span class="hs-identifier hs-type">Ord1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581687"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Ord1"><span class="hs-identifier hs-type">Ord1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581686"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Ord"><span class="hs-identifier hs-type">Ord</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581685"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Ord"><span class="hs-identifier hs-type">Ord</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581687"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581686"><span class="hs-identifier hs-type">g</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581685"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-68"></span><span>    </span><span id="local-6989586621679581233"><span class="annot"><span class="annottext">compare :: Product f g a -&gt; Product f g a -&gt; Ordering
</span><a href="../../ghc-prim/src/GHC.Classes.html#compare"><span class="hs-identifier hs-var hs-var hs-var hs-var">compare</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Product f g a -&gt; Product f g a -&gt; Ordering
forall (f :: * -&gt; *) a. (Ord1 f, Ord a) =&gt; f a -&gt; f a -&gt; Ordering
</span><a href="Data.Functor.Classes.html#compare1"><span class="hs-identifier hs-var">compare1</span></a></span></span></span></span><span>
</span><span id="line-69"></span><span>
</span><span id="line-70"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-71"></span><span id="local-6989586621679581679"><span id="local-6989586621679581680"><span id="local-6989586621679581681"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581229"><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Read1"><span class="hs-identifier hs-type">Read1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581681"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Read1"><span class="hs-identifier hs-type">Read1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581680"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581679"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581681"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581680"><span class="hs-identifier hs-type">g</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581679"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-72"></span><span>    </span><span id="local-6989586621679581222"><span class="annot"><span class="annottext">readPrec :: ReadPrec (Product f g a)
</span><a href="GHC.Read.html#readPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">readPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ReadPrec (Product f g a)
forall (f :: * -&gt; *) a. (Read1 f, Read a) =&gt; ReadPrec (f a)
</span><a href="Data.Functor.Classes.html#readPrec1"><span class="hs-identifier hs-var">readPrec1</span></a></span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span>    </span><span id="local-6989586621679581218"><span class="annot"><span class="annottext">readListPrec :: ReadPrec [Product f g a]
</span><a href="GHC.Read.html#readListPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">readListPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ReadPrec [Product f g a]
forall a. Read a =&gt; ReadPrec [a]
</span><a href="GHC.Read.html#readListPrecDefault"><span class="hs-identifier hs-var">readListPrecDefault</span></a></span><span>
</span><span id="line-75"></span><span>    </span><span id="local-6989586621679581215"><span class="annot"><span class="annottext">readList :: ReadS [Product f g a]
</span><a href="GHC.Read.html#readList"><span class="hs-identifier hs-var hs-var hs-var hs-var">readList</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ReadS [Product f g a]
forall a. Read a =&gt; ReadS [a]
</span><a href="GHC.Read.html#readListDefault"><span class="hs-identifier hs-var">readListDefault</span></a></span></span></span></span><span>
</span><span id="line-76"></span><span>
</span><span id="line-77"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-78"></span><span id="local-6989586621679581671"><span id="local-6989586621679581672"><span id="local-6989586621679581673"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581209"><span id="local-6989586621679581211"><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Classes.html#Show1"><span class="hs-identifier hs-type">Show1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581673"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Functor.Classes.html#Show1"><span class="hs-identifier hs-type">Show1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581672"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581671"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581673"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581672"><span class="hs-identifier hs-type">g</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581671"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-79"></span><span>    </span><span id="local-6989586621679581205"><span class="annot"><span class="annottext">showsPrec :: Int -&gt; Product f g a -&gt; ShowS
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">showsPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Product f g a -&gt; ShowS
forall (f :: * -&gt; *) a. (Show1 f, Show a) =&gt; Int -&gt; f a -&gt; ShowS
</span><a href="Data.Functor.Classes.html#showsPrec1"><span class="hs-identifier hs-var">showsPrec1</span></a></span></span></span></span><span>
</span><span id="line-80"></span><span>
</span><span id="line-81"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-82"></span><span id="local-6989586621679581660"><span id="local-6989586621679581661"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#Functor"><span class="hs-identifier hs-type">Functor</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581661"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#Functor"><span class="hs-identifier hs-type">Functor</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581660"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#Functor"><span class="hs-identifier hs-type">Functor</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581661"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581660"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-83"></span><span>    </span><span id="local-6989586621679581194"><span class="annot"><span class="annottext">fmap :: forall a b. (a -&gt; b) -&gt; Product f g a -&gt; Product f g b
</span><a href="GHC.Base.html#fmap"><span class="hs-identifier hs-var hs-var hs-var hs-var">fmap</span></a></span></span><span> </span><span id="local-6989586621679581193"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621679581193"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581192"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581192"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581191"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581191"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f b -&gt; g b -&gt; Product f g b
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; f a -&gt; f b
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621679581193"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581192"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; g a -&gt; g b
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621679581193"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581191"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-84"></span><span>    </span><span id="local-6989586621679581188"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679581188"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679581187"><span class="annot"><span class="annottext">&lt;$ :: forall a b. a -&gt; Product f g b -&gt; Product f g a
</span><a href="GHC.Base.html#%3C%24"><span class="hs-operator hs-var hs-var hs-var hs-var">&lt;$</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581185"><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581185"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581184"><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581184"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679581188"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; f b -&gt; f a
forall (f :: * -&gt; *) a b. Functor f =&gt; a -&gt; f b -&gt; f a
</span><a href="GHC.Base.html#%3C%24"><span class="hs-operator hs-var">&lt;$</span></a></span><span> </span><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581185"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679581188"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; g b -&gt; g a
forall (f :: * -&gt; *) a b. Functor f =&gt; a -&gt; f b -&gt; f a
</span><a href="GHC.Base.html#%3C%24"><span class="hs-operator hs-var">&lt;$</span></a></span><span> </span><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581184"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-87"></span><span id="local-6989586621679581639"><span id="local-6989586621679581640"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581151"><span id="local-6989586621679581153"><span id="local-6989586621679581155"><span id="local-6989586621679581157"><span id="local-6989586621679581159"><span id="local-6989586621679581161"><span id="local-6989586621679581163"><span id="local-6989586621679581165"><span id="local-6989586621679581167"><span id="local-6989586621679581169"><span id="local-6989586621679581171"><span id="local-6989586621679581173"><span id="local-6989586621679581175"><span id="local-6989586621679581177"><span id="local-6989586621679581179"><span id="local-6989586621679581182"><span class="hs-special">(</span><span class="annot"><a href="Data.Foldable.html#Foldable"><span class="hs-identifier hs-type">Foldable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581640"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Foldable.html#Foldable"><span class="hs-identifier hs-type">Foldable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581639"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Foldable.html#Foldable"><span class="hs-identifier hs-type">Foldable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581640"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581639"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-88"></span><span>    </span><span id="local-6989586621679581143"><span class="annot"><span class="annottext">foldMap :: forall m a. Monoid m =&gt; (a -&gt; m) -&gt; Product f g a -&gt; m
</span><a href="Data.Foldable.html#foldMap"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldMap</span></a></span></span><span> </span><span id="local-6989586621679581141"><span class="annot"><span class="annottext">a -&gt; m
</span><a href="#local-6989586621679581141"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581140"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581140"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581139"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581139"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; m) -&gt; f a -&gt; m
forall (t :: * -&gt; *) m a.
(Foldable t, Monoid m) =&gt;
(a -&gt; m) -&gt; t a -&gt; m
</span><a href="Data.Foldable.html#foldMap"><span class="hs-identifier hs-var">foldMap</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; m
</span><a href="#local-6989586621679581141"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581140"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">m -&gt; m -&gt; m
forall a. Monoid a =&gt; a -&gt; a -&gt; a
</span><a href="GHC.Base.html#mappend"><span class="hs-operator hs-var">`mappend`</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; m) -&gt; g a -&gt; m
forall (t :: * -&gt; *) m a.
(Foldable t, Monoid m) =&gt;
(a -&gt; m) -&gt; t a -&gt; m
</span><a href="Data.Foldable.html#foldMap"><span class="hs-identifier hs-var">foldMap</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; m
</span><a href="#local-6989586621679581141"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581139"><span class="hs-identifier hs-var">y</span></a></span></span></span><span>
</span><span id="line-89"></span><span>
</span><span id="line-90"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-91"></span><span id="local-6989586621679581624"><span id="local-6989586621679581625"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581128"><span id="local-6989586621679581130"><span id="local-6989586621679581132"><span class="hs-special">(</span><span class="annot"><a href="Data.Traversable.html#Traversable"><span class="hs-identifier hs-type">Traversable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581625"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Traversable.html#Traversable"><span class="hs-identifier hs-type">Traversable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581624"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Traversable.html#Traversable"><span class="hs-identifier hs-type">Traversable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581625"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581624"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-92"></span><span>    </span><span id="local-6989586621679581120"><span class="annot"><span class="annottext">traverse :: forall (f :: * -&gt; *) a b.
Applicative f =&gt;
(a -&gt; f b) -&gt; Product f g a -&gt; f (Product f g b)
</span><a href="Data.Traversable.html#traverse"><span class="hs-identifier hs-var hs-var hs-var hs-var">traverse</span></a></span></span><span> </span><span id="local-6989586621679581118"><span class="annot"><span class="annottext">a -&gt; f b
</span><a href="#local-6989586621679581118"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581117"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581117"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581116"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581116"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(f b -&gt; g b -&gt; Product f g b)
-&gt; f (f b) -&gt; f (g b) -&gt; f (Product f g b)
forall (f :: * -&gt; *) a b c.
Applicative f =&gt;
(a -&gt; b -&gt; c) -&gt; f a -&gt; f b -&gt; f c
</span><a href="GHC.Base.html#liftA2"><span class="hs-identifier hs-var">liftA2</span></a></span><span> </span><span class="annot"><span class="annottext">f b -&gt; g b -&gt; Product f g b
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; f b) -&gt; f a -&gt; f (f b)
forall (t :: * -&gt; *) (f :: * -&gt; *) a b.
(Traversable t, Applicative f) =&gt;
(a -&gt; f b) -&gt; t a -&gt; f (t b)
</span><a href="Data.Traversable.html#traverse"><span class="hs-identifier hs-var">traverse</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; f b
</span><a href="#local-6989586621679581118"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581117"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; f b) -&gt; g a -&gt; f (g b)
forall (t :: * -&gt; *) (f :: * -&gt; *) a b.
(Traversable t, Applicative f) =&gt;
(a -&gt; f b) -&gt; t a -&gt; f (t b)
</span><a href="Data.Traversable.html#traverse"><span class="hs-identifier hs-var">traverse</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; f b
</span><a href="#local-6989586621679581118"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581116"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-93"></span><span>
</span><span id="line-94"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-95"></span><span id="local-6989586621679581608"><span id="local-6989586621679581609"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581106"><span id="local-6989586621679581108"><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#Applicative"><span class="hs-identifier hs-type">Applicative</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581609"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#Applicative"><span class="hs-identifier hs-type">Applicative</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581608"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#Applicative"><span class="hs-identifier hs-type">Applicative</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581609"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581608"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-96"></span><span>    </span><span id="local-6989586621679581102"><span class="annot"><span class="annottext">pure :: forall a. a -&gt; Product f g a
</span><a href="GHC.Base.html#pure"><span class="hs-identifier hs-var hs-var hs-var hs-var">pure</span></a></span></span><span> </span><span id="local-6989586621679581101"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679581101"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a -&gt; f a
forall (f :: * -&gt; *) a. Applicative f =&gt; a -&gt; f a
</span><a href="GHC.Base.html#pure"><span class="hs-identifier hs-var">pure</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679581101"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a -&gt; g a
forall (f :: * -&gt; *) a. Applicative f =&gt; a -&gt; f a
</span><a href="GHC.Base.html#pure"><span class="hs-identifier hs-var">pure</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679581101"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-97"></span><span>    </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581098"><span class="annot"><span class="annottext">f (a -&gt; b)
</span><a href="#local-6989586621679581098"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621679581097"><span class="annot"><span class="annottext">g (a -&gt; b)
</span><a href="#local-6989586621679581097"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679581096"><span class="annot"><span class="annottext">&lt;*&gt; :: forall a b. Product f g (a -&gt; b) -&gt; Product f g a -&gt; Product f g b
</span><a href="GHC.Base.html#%3C%2A%3E"><span class="hs-operator hs-var hs-var hs-var hs-var">&lt;*&gt;</span></a></span></span><span> </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581095"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581095"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581094"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581094"><span class="hs-identifier hs-var">y</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f b -&gt; g b -&gt; Product f g b
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">f (a -&gt; b)
</span><a href="#local-6989586621679581098"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">f (a -&gt; b) -&gt; f a -&gt; f b
forall (f :: * -&gt; *) a b. Applicative f =&gt; f (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="GHC.Base.html#%3C%2A%3E"><span class="hs-operator hs-var">&lt;*&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581095"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">g (a -&gt; b)
</span><a href="#local-6989586621679581097"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="annot"><span class="annottext">g (a -&gt; b) -&gt; g a -&gt; g b
forall (f :: * -&gt; *) a b. Applicative f =&gt; f (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="GHC.Base.html#%3C%2A%3E"><span class="hs-operator hs-var">&lt;*&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581094"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-98"></span><span>    </span><span id="local-6989586621679581091"><span class="annot"><span class="annottext">liftA2 :: forall a b c.
(a -&gt; b -&gt; c) -&gt; Product f g a -&gt; Product f g b -&gt; Product f g c
</span><a href="#local-6989586621679581091"><span class="hs-identifier hs-var hs-var hs-var hs-var">liftA2</span></a></span></span><span> </span><span id="local-6989586621679581090"><span class="annot"><span class="annottext">a -&gt; b -&gt; c
</span><a href="#local-6989586621679581090"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581089"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581089"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679581088"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581088"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581087"><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581087"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679581086"><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581086"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f c -&gt; g c -&gt; Product f g c
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; c) -&gt; f a -&gt; f b -&gt; f c
forall (f :: * -&gt; *) a b c.
Applicative f =&gt;
(a -&gt; b -&gt; c) -&gt; f a -&gt; f b -&gt; f c
</span><a href="GHC.Base.html#liftA2"><span class="hs-identifier hs-var">liftA2</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; c
</span><a href="#local-6989586621679581090"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581089"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679581087"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; c) -&gt; g a -&gt; g b -&gt; g c
forall (f :: * -&gt; *) a b c.
Applicative f =&gt;
(a -&gt; b -&gt; c) -&gt; f a -&gt; f b -&gt; f c
</span><a href="GHC.Base.html#liftA2"><span class="hs-identifier hs-var">liftA2</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; c
</span><a href="#local-6989586621679581090"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581088"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679581086"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-99"></span><span>
</span><span id="line-100"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-101"></span><span id="local-6989586621679581596"><span id="local-6989586621679581597"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581078"><span id="local-6989586621679581080"><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#Alternative"><span class="hs-identifier hs-type">Alternative</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581597"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#Alternative"><span class="hs-identifier hs-type">Alternative</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581596"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#Alternative"><span class="hs-identifier hs-type">Alternative</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581597"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581596"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-102"></span><span>    </span><span id="local-6989586621679581074"><span class="annot"><span class="annottext">empty :: forall a. Product f g a
</span><a href="GHC.Base.html#empty"><span class="hs-identifier hs-var hs-var hs-var hs-var">empty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="annot"><span class="annottext">f a
forall (f :: * -&gt; *) a. Alternative f =&gt; f a
</span><a href="GHC.Base.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span> </span><span class="annot"><span class="annottext">g a
forall (f :: * -&gt; *) a. Alternative f =&gt; f a
</span><a href="GHC.Base.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-103"></span><span>    </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581070"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581070"><span class="hs-identifier hs-var">x1</span></a></span></span><span> </span><span id="local-6989586621679581069"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581069"><span class="hs-identifier hs-var">y1</span></a></span></span><span> </span><span id="local-6989586621679581068"><span class="annot"><span class="annottext">&lt;|&gt; :: forall a. Product f g a -&gt; Product f g a -&gt; Product f g a
</span><a href="GHC.Base.html#%3C%7C%3E"><span class="hs-operator hs-var hs-var hs-var hs-var">&lt;|&gt;</span></a></span></span><span> </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581066"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581066"><span class="hs-identifier hs-var">x2</span></a></span></span><span> </span><span id="local-6989586621679581065"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581065"><span class="hs-identifier hs-var">y2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581070"><span class="hs-identifier hs-var">x1</span></a></span><span> </span><span class="annot"><span class="annottext">f a -&gt; f a -&gt; f a
forall (f :: * -&gt; *) a. Alternative f =&gt; f a -&gt; f a -&gt; f a
</span><a href="GHC.Base.html#%3C%7C%3E"><span class="hs-operator hs-var">&lt;|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581066"><span class="hs-identifier hs-var">x2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581069"><span class="hs-identifier hs-var">y1</span></a></span><span> </span><span class="annot"><span class="annottext">g a -&gt; g a -&gt; g a
forall (f :: * -&gt; *) a. Alternative f =&gt; f a -&gt; f a -&gt; f a
</span><a href="GHC.Base.html#%3C%7C%3E"><span class="hs-operator hs-var">&lt;|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581065"><span class="hs-identifier hs-var">y2</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-104"></span><span>
</span><span id="line-105"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-106"></span><span id="local-6989586621679581586"><span id="local-6989586621679581587"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679581058"><span id="local-6989586621679581060"><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#Monad"><span class="hs-identifier hs-type">Monad</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581587"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#Monad"><span class="hs-identifier hs-type">Monad</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581586"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#Monad"><span class="hs-identifier hs-type">Monad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581587"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581586"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-107"></span><span>    </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581054"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581054"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621679581053"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581053"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679581052"><span class="annot"><span class="annottext">&gt;&gt;= :: forall a b. Product f g a -&gt; (a -&gt; Product f g b) -&gt; Product f g b
</span><a href="GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var hs-var hs-var hs-var">&gt;&gt;=</span></a></span></span><span> </span><span id="local-6989586621679581051"><span class="annot"><span class="annottext">a -&gt; Product f g b
</span><a href="#local-6989586621679581051"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f b -&gt; g b -&gt; Product f g b
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581054"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">f a -&gt; (a -&gt; f b) -&gt; f b
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b
</span><a href="GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var">&gt;&gt;=</span></a></span><span> </span><span class="annot"><span class="annottext">Product f g b -&gt; f b
forall {k} {f :: k -&gt; *} {g :: k -&gt; *} {a :: k}.
Product f g a -&gt; f a
</span><a href="#local-6989586621679581050"><span class="hs-identifier hs-var">fstP</span></a></span><span> </span><span class="annot"><span class="annottext">(Product f g b -&gt; f b) -&gt; (a -&gt; Product f g b) -&gt; a -&gt; f b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; Product f g b
</span><a href="#local-6989586621679581051"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581053"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">g a -&gt; (a -&gt; g b) -&gt; g b
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b
</span><a href="GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var">&gt;&gt;=</span></a></span><span> </span><span class="annot"><span class="annottext">Product f g b -&gt; g b
forall {k} {f :: k -&gt; *} {g :: k -&gt; *} {a :: k}.
Product f g a -&gt; g a
</span><a href="#local-6989586621679581048"><span class="hs-identifier hs-var">sndP</span></a></span><span> </span><span class="annot"><span class="annottext">(Product f g b -&gt; g b) -&gt; (a -&gt; Product f g b) -&gt; a -&gt; g b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; Product f g b
</span><a href="#local-6989586621679581051"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-108"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-109"></span><span>        </span><span id="local-6989586621679581050"><span class="annot"><span class="annottext">fstP :: Product f g a -&gt; f a
</span><a href="#local-6989586621679581050"><span class="hs-identifier hs-var hs-var">fstP</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581047"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581047"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="annot"><span class="annottext">g a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581047"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-110"></span><span>        </span><span id="local-6989586621679581048"><span class="annot"><span class="annottext">sndP :: Product f g a -&gt; g a
</span><a href="#local-6989586621679581048"><span class="hs-identifier hs-var hs-var">sndP</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679581046"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581046"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581046"><span class="hs-identifier hs-var">b</span></a></span></span></span><span>
</span><span id="line-111"></span><span>
</span><span id="line-112"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-113"></span><span id="local-6989586621679581566"><span id="local-6989586621679581567"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#MonadPlus"><span class="hs-identifier hs-type">MonadPlus</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581567"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#MonadPlus"><span class="hs-identifier hs-type">MonadPlus</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581566"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#MonadPlus"><span class="hs-identifier hs-type">MonadPlus</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581567"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581566"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-114"></span><span>    </span><span id="local-6989586621679581027"><span class="annot"><span class="annottext">mzero :: forall a. Product f g a
</span><a href="GHC.Base.html#mzero"><span class="hs-identifier hs-var hs-var hs-var hs-var">mzero</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="annot"><span class="annottext">f a
forall (m :: * -&gt; *) a. MonadPlus m =&gt; m a
</span><a href="GHC.Base.html#mzero"><span class="hs-identifier hs-var">mzero</span></a></span><span> </span><span class="annot"><span class="annottext">g a
forall (m :: * -&gt; *) a. MonadPlus m =&gt; m a
</span><a href="GHC.Base.html#mzero"><span class="hs-identifier hs-var">mzero</span></a></span><span>
</span><span id="line-115"></span><span>    </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581023"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581023"><span class="hs-identifier hs-var">x1</span></a></span></span><span> </span><span id="local-6989586621679581022"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581022"><span class="hs-identifier hs-var">y1</span></a></span></span><span> </span><span id="local-6989586621679581021"><span class="annot"><span class="annottext">mplus :: forall a. Product f g a -&gt; Product f g a -&gt; Product f g a
</span><a href="GHC.Base.html#mplus"><span class="hs-operator hs-var hs-var hs-var hs-var">`mplus`</span></a></span></span><span> </span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581019"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581019"><span class="hs-identifier hs-var">x2</span></a></span></span><span> </span><span id="local-6989586621679581018"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581018"><span class="hs-identifier hs-var">y2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581023"><span class="hs-identifier hs-var">x1</span></a></span><span> </span><span class="annot"><span class="annottext">f a -&gt; f a -&gt; f a
forall (m :: * -&gt; *) a. MonadPlus m =&gt; m a -&gt; m a -&gt; m a
</span><a href="GHC.Base.html#mplus"><span class="hs-operator hs-var">`mplus`</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581019"><span class="hs-identifier hs-var">x2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581022"><span class="hs-identifier hs-var">y1</span></a></span><span> </span><span class="annot"><span class="annottext">g a -&gt; g a -&gt; g a
forall (m :: * -&gt; *) a. MonadPlus m =&gt; m a -&gt; m a -&gt; m a
</span><a href="GHC.Base.html#mplus"><span class="hs-operator hs-var">`mplus`</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581018"><span class="hs-identifier hs-var">y2</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-116"></span><span>
</span><span id="line-117"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-118"></span><span id="local-6989586621679581558"><span id="local-6989586621679581559"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Control.Monad.Fix.html#MonadFix"><span class="hs-identifier hs-type">MonadFix</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581559"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Control.Monad.Fix.html#MonadFix"><span class="hs-identifier hs-type">MonadFix</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581558"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Control.Monad.Fix.html#MonadFix"><span class="hs-identifier hs-type">MonadFix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581559"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581558"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-119"></span><span>    </span><span id="local-6989586621679581005"><span class="annot"><span class="annottext">mfix :: forall a. (a -&gt; Product f g a) -&gt; Product f g a
</span><a href="Control.Monad.Fix.html#mfix"><span class="hs-identifier hs-var hs-var hs-var hs-var">mfix</span></a></span></span><span> </span><span id="local-6989586621679581004"><span class="annot"><span class="annottext">a -&gt; Product f g a
</span><a href="#local-6989586621679581004"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a -&gt; g a -&gt; Product f g a
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; f a) -&gt; f a
forall (m :: * -&gt; *) a. MonadFix m =&gt; (a -&gt; m a) -&gt; m a
</span><a href="Control.Monad.Fix.html#mfix"><span class="hs-identifier hs-var">mfix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Product f g a -&gt; f a
forall {k} {f :: k -&gt; *} {g :: k -&gt; *} {a :: k}.
Product f g a -&gt; f a
</span><a href="#local-6989586621679581003"><span class="hs-identifier hs-var">fstP</span></a></span><span> </span><span class="annot"><span class="annottext">(Product f g a -&gt; f a) -&gt; (a -&gt; Product f g a) -&gt; a -&gt; f a
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; Product f g a
</span><a href="#local-6989586621679581004"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; g a) -&gt; g a
forall (m :: * -&gt; *) a. MonadFix m =&gt; (a -&gt; m a) -&gt; m a
</span><a href="Control.Monad.Fix.html#mfix"><span class="hs-identifier hs-var">mfix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Product f g a -&gt; g a
forall {k} {f :: k -&gt; *} {g :: k -&gt; *} {a :: k}.
Product f g a -&gt; g a
</span><a href="#local-6989586621679581002"><span class="hs-identifier hs-var">sndP</span></a></span><span> </span><span class="annot"><span class="annottext">(Product f g a -&gt; g a) -&gt; (a -&gt; Product f g a) -&gt; a -&gt; g a
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; Product f g a
</span><a href="#local-6989586621679581004"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-120"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-121"></span><span>        </span><span id="local-6989586621679581003"><span class="annot"><span class="annottext">fstP :: Product f g a -&gt; f a
</span><a href="#local-6989586621679581003"><span class="hs-identifier hs-var hs-var">fstP</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679581001"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581001"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="annot"><span class="annottext">g a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679581001"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-122"></span><span>        </span><span id="local-6989586621679581002"><span class="annot"><span class="annottext">sndP :: Product f g a -&gt; g a
</span><a href="#local-6989586621679581002"><span class="hs-identifier hs-var hs-var">sndP</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679581000"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581000"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679581000"><span class="hs-identifier hs-var">b</span></a></span></span></span><span>
</span><span id="line-123"></span><span>
</span><span id="line-124"></span><span class="hs-comment">-- | @since 4.9.0.0</span><span>
</span><span id="line-125"></span><span id="local-6989586621679581539"><span id="local-6989586621679581540"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679580993"><span id="local-6989586621679580996"><span class="hs-special">(</span><span class="annot"><a href="Control.Monad.Zip.html#MonadZip"><span class="hs-identifier hs-type">MonadZip</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581540"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Control.Monad.Zip.html#MonadZip"><span class="hs-identifier hs-type">MonadZip</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581539"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Control.Monad.Zip.html#MonadZip"><span class="hs-identifier hs-type">MonadZip</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Product"><span class="hs-identifier hs-type">Product</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581540"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679581539"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-126"></span><span>    </span><span id="local-6989586621679580989"><span class="annot"><span class="annottext">mzipWith :: forall a b c.
(a -&gt; b -&gt; c) -&gt; Product f g a -&gt; Product f g b -&gt; Product f g c
</span><a href="#local-6989586621679580989"><span class="hs-identifier hs-var hs-var hs-var hs-var">mzipWith</span></a></span></span><span> </span><span id="local-6989586621679580988"><span class="annot"><span class="annottext">a -&gt; b -&gt; c
</span><a href="#local-6989586621679580988"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679580987"><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679580987"><span class="hs-identifier hs-var">x1</span></a></span></span><span> </span><span id="local-6989586621679580986"><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679580986"><span class="hs-identifier hs-var">y1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-type">Pair</span></a></span><span> </span><span id="local-6989586621679580985"><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679580985"><span class="hs-identifier hs-var">x2</span></a></span></span><span> </span><span id="local-6989586621679580984"><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679580984"><span class="hs-identifier hs-var">y2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">f c -&gt; g c -&gt; Product f g c
forall {k} (f :: k -&gt; *) (g :: k -&gt; *) (a :: k).
f a -&gt; g a -&gt; Product f g a
</span><a href="Data.Functor.Product.html#Pair"><span class="hs-identifier hs-var">Pair</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; c) -&gt; f a -&gt; f b -&gt; f c
forall (m :: * -&gt; *) a b c.
MonadZip m =&gt;
(a -&gt; b -&gt; c) -&gt; m a -&gt; m b -&gt; m c
</span><a href="Control.Monad.Zip.html#mzipWith"><span class="hs-identifier hs-var">mzipWith</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; c
</span><a href="#local-6989586621679580988"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">f a
</span><a href="#local-6989586621679580987"><span class="hs-identifier hs-var">x1</span></a></span><span> </span><span class="annot"><span class="annottext">f b
</span><a href="#local-6989586621679580985"><span class="hs-identifier hs-var">x2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; c) -&gt; g a -&gt; g b -&gt; g c
forall (m :: * -&gt; *) a b c.
MonadZip m =&gt;
(a -&gt; b -&gt; c) -&gt; m a -&gt; m b -&gt; m c
</span><a href="Control.Monad.Zip.html#mzipWith"><span class="hs-identifier hs-var">mzipWith</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; c
</span><a href="#local-6989586621679580988"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">g a
</span><a href="#local-6989586621679580986"><span class="hs-identifier hs-var">y1</span></a></span><span> </span><span class="annot"><span class="annottext">g b
</span><a href="#local-6989586621679580984"><span class="hs-identifier hs-var">y2</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-127"></span></pre></body></html>